Процедуры и функции.
Пример:
Dim i, b As Integer
Private Sub Command1_Click()
For i = 1 To 100 Step 4
If (i Mod 3) = 0 Then
умножаем_на_2
If (i Mod 5) = 0 Then
делим_на_5
End If
End If
Next i
End Sub
Private Sub умножаем_на_2()
b = i * 2
Print b
End Sub
Private Sub делим_на_5()
b = i / 5
Print b
End Sub
У нас есть 2 процедуры. Каждая из этих процедур представляет собой цепочку операторов, из которых состоит упомянутый фрагмент.
Сверху цепочки вы пишете заголовок процедуры (Private Sub...), а снизу - конечную строчку процедуры (End Sub).
Все операторы, из которых состоит процедура, кроме заголовка и конечной строки, будем называть телом процедуры.
Как только эти процедуры написаны, компьютер "узнает", что такое Умножаем_на_2 и Делим_на_5. Поэтому в остальных процедурах слова
Умножаем_на_2 и Делим_на_5 используются, как настоящие операторы, и выполняются, как настоящие операторы. Суть их выполнения в том,
что когда Visual Basic во время выполнения программы натыкается на оператор Умножаем_на_2 он ищет в программе процедуру с именем
Умножаем_на_2 и выполняет тело этой процедуры, после чего возвращается к выполнению программы.
Этот процесс называется вызовом процедуры или обращением к процедуре.
Процедуры очень удобны для объемных программ, где необходимо выполнять повторяющиеся действия.
Взаимодействие процедур в программе
Вызываемая процедура сама в процессе своей работы может вызвать какую-нибудь другую процедуру.
И так далее. Потренируемся: Определите без компьютера, что напечатает программа:
Private Sub Command1_Click()
Print 1; : A : Print 2; : В : Print 3
End Sub
Private Sub A()
Print 4
End Sub
Private Sub B()
Print 5; : С : Print 6
End Sub
Private Sub C()
Print 7
End Sub
Операторы Stop, End и Exit Sub
До сих пор мы писали процедуры, которые выполняли свою работу до конца и заканчивали ее только на операторе End Sub,
не раньше. Существуют ли операторы, которые, подобно операторам выхода из цикла Exit Do и Exit For, заставляют
компьютер покинуть процедуру, не доходя до ее конца? Такие операторы существуют. Оператор End заставляет
Visual Basic завершить работу не только процедуры, а всего проекта, не доходя до конечного End Sub. Оператор Exit Sub
не такой решительный, как End. Он не выбрасывает Visual Basic из режима работы, а просто заставляет компьютер выйти
из процедуры, в которой он выполнился. Если он выполнился в вызываемой процедуре, то Visual Basic возвращается в процедуру,
ее вызвавшую. Если он выполнился в процедуре обработки события, то Visual Basic просто завершает работу этой процедуры.